home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Think Class Libraries / CScrollList 1.0 / CScrollList Classes / CScrollList.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-30  |  4.9 KB  |  199 lines  |  [TEXT/KAHL]

  1. /******************************************************************************
  2.  CScrollList.h
  3.  
  4.         Interface for Scroll List class
  5.         
  6.     SUPERCLASS = CPanorama
  7.     
  8.         © 1992 Dave Harkness
  9.  
  10. ******************************************************************************/
  11.  
  12.  
  13. #define _H_CScrollList            // include file only once
  14.  
  15. #include <CPanorama.h>            // include superclass interface
  16.  
  17.  
  18. class CScrollPane;
  19. class CMouseTask;
  20. class CArray;
  21. class CStateArray;
  22.  
  23.  
  24. enum {
  25.     kDontRedraw = 0,
  26.     kDoRedraw
  27. };
  28.  
  29. enum {
  30.     kSLSelectable = 1,
  31.     kSLDragable = 2,
  32.     kSLCheckable = 4,
  33.     kSLEditable = 8
  34. };
  35.  
  36.  
  37. class CScrollList : public CPanorama
  38. {
  39. public:
  40.  
  41.     void    IScrollList( CView *anEnclosure, CBureaucrat *aSupervisor,
  42.                          short aWidth, short aHeight,
  43.                          short aHEncl, short aVEncl,
  44.                          SizingOption aHSizing, SizingOption aVSizing,
  45.                          short fOptions);
  46.                 
  47.     virtual void    IViewTemp( CView *anEnclosure, CBureaucrat *aSupervisor,
  48.                                Ptr viewData);
  49.  
  50.     virtual void    SetScrollPane( CScrollPane *aScrollPane);
  51.  
  52.             // Change size
  53.         
  54.     virtual void    AddCell( short numCells, short afterCell);
  55.     virtual void    DeleteCell( short numCells, short startCell);
  56.     
  57.             // Checking
  58.     
  59.     virtual Boolean        IsChecked( short theCell);
  60.     virtual void        CheckCell( short theCell);
  61.     virtual void        CheckAllCells( Boolean fCheckState);
  62.  
  63.             // Query
  64.     
  65.     virtual short    GetNumCells( void);
  66.     virtual short    GetCellHeight( void);
  67.     
  68.     virtual short    GetSelectedCell( void);
  69.         
  70.     virtual void    GetCellRect( short theCell, LongRect *cellRect);
  71.     
  72.     virtual Boolean PixelsToCells( LongRect *pixelsRect, short *firstCell, short *lastCell);
  73.     virtual Boolean CellsToPixels( short firstCell, short lastCell, LongRect *pixelsRect);
  74.     
  75.             // Cursor/Clicking
  76.     
  77.     virtual void    AdjustCursor( Point where, RgnHandle mouseRgn );
  78.     virtual void    DoClick( Point hitPt, short modifierKeys, long when);
  79.     virtual void    DoDblClick( short hitCell, short modifierKeys, long when);
  80.  
  81.     virtual Boolean HitSamePart( Point pointA, Point pointB);
  82.     virtual short    FindHitCell( LongPt *hitPt);
  83.  
  84.     virtual void    SetDblClickCmd( long aCmd);
  85.     
  86.             // Drawing
  87.     
  88.     virtual void    Draw( Rect *area);
  89.  
  90.     virtual void    RefreshCell( short aCell);
  91.     virtual void    RefreshCellRange( short firstCell, short lastCell);
  92.     
  93.     virtual void    SetDrawActiveBorder( Boolean fDrawActiveBorder);
  94.     
  95.     virtual void    Activate( void);
  96.     virtual void    Deactivate( void);
  97.  
  98.             // Typing
  99.     
  100.     virtual void    DoKeyDown( char theChar, Byte keyCode, EventRecord *macEvent);
  101.     virtual void    DoAutoKey( char theChar, Byte keyCode, EventRecord *macEvent);
  102.     
  103.         // Editing Commands
  104.     
  105.     virtual void    DoAddCell( void);
  106.     virtual void    DoAddAnotherCell( void);
  107.     virtual void    DoModifyCell( void);
  108.     virtual void    DoDeleteCell( void);
  109.     virtual void    DoInsertCell( short beforeCell);
  110.     
  111.     virtual Boolean    BecomeGopher( Boolean fBecoming);
  112.  
  113.             // Selecting
  114.     
  115.     virtual void    SelectCell( short aCell, Boolean reDraw);
  116.     virtual void    ScrollToSelection( void);
  117.     virtual void    FrameCell( short theCell, Boolean frameFlag);
  118.     
  119.             // Array Access
  120.     
  121.     virtual void            SetArray( CArray *anArray);
  122.     virtual CArray            *GetArray( void);
  123.     virtual CStateArray        *GetCheckArray( void);
  124.     
  125.             // Disposal
  126.     
  127.     virtual void    Dispose( void);
  128.  
  129. protected:
  130.  
  131.     short            numCells;                    // Number of cells in the table
  132.     short            selectedCell;                // Maintains the selected cell
  133.     
  134.     short            cellHeight;                    // Height in pixels of each cell
  135.     FontInfo        fontInfo;                    // Info of the font used in this list
  136.     Point            indent;                        // Indent of each individual cell
  137.     
  138.     long            dblClickCmd;                // Command sent for cell double click
  139.     Boolean            drawActiveBorder;            // Draw a two-pixel thick border?
  140.     short            listOptions;                // All four options for this list
  141.     
  142.     Boolean            fEditing;                    // Is a cell being edited?
  143.     Boolean            fStillEditing;                // Is another cell being edited?
  144.     
  145.     CArray            *itsArray;                    // Array being displayed in list
  146.     CStateArray        *itsChecks;                    // Array to hold checked states
  147.     
  148.             // Initialization
  149.             
  150.     void            IScrollListX( short fOptions);
  151.     virtual void    CreateTextEnvironment( void);
  152.                     
  153.     virtual void    AdjustBounds( void);
  154.  
  155.     virtual CMouseTask    *MakeMouseTask( short modifiers);
  156.     virtual void        ClickOutsideBounds( Point hitPt, short modifierKeys, long when);
  157.     
  158.     virtual void    ProviderChanged( CCollaborator *aProvider, long reason, void* info);    
  159.     
  160.             // Drawing
  161.     
  162.     virtual void    DrawCell( short theCell, Rect *cellRect);
  163.     virtual void    Hilite( short theCell, Boolean hiliteFlag);
  164.     
  165.     virtual void    MakeBorder( void);
  166.     
  167.             // Editing Cells
  168.  
  169.     virtual void    BeginEditing( void);
  170.     virtual void    SetupCellData( void);
  171.     virtual void    RetrieveCellData( void);
  172.     virtual void    DoneEditing( void);
  173.  
  174. };
  175.  
  176.  
  177. /* Change protocol for CScrollList        */
  178.  
  179. enum
  180. {
  181.     scrollListSelectionChanged = bureaucratLastChange + 1,
  182.     
  183.     scrollListLastChange = scrollListSelectionChanged
  184.  
  185. };
  186.  
  187. typedef struct
  188. {
  189.     short            prevSelection;
  190.     short            newSelection;
  191. } tSelectionInfo;
  192.  
  193. typedef struct
  194. {
  195.     PanoramaTemp    panorama;
  196.     long            dblClickCmd;
  197.     short            drawActiveBorder;
  198.     short            listOptions;
  199. } tScrollListTemp, *tScrollListTempP;